package beans;

import java.util.List;

import javax.naming.NamingException;
import org.richfaces.component.html.HtmlDataTable;

import co.edu.uniquindio.ondas.delegados.AdministradorDelegado;
import co.edu.uniquindio.ondas.dtos.ResumenInvestigacionAsesorDTO;
import co.edu.uniquindio.ondas.entidades.Asesor;

/**
 * @author Javier 
 * Bean para Editar Asesor del Sistema
 */
public class EditarAsesorBean {

	AdministradorDelegado administradorDelegado;
	List<Asesor> asesores;
	List<ResumenInvestigacionAsesorDTO> infoInvestigaciones;

	private HtmlDataTable myDataTable;
	private HtmlDataTable tablaInvestigacion;

	private Asesor asesorSeleccionado = new Asesor();
	private ResumenInvestigacionAsesorDTO instigacionSeleccionada = new ResumenInvestigacionAsesorDTO(
			0, 0, "", "");

	/**
	 * @return
	 * @throws NamingException
	 */
	public String obtenerListaAsesores() throws NamingException {
		administradorDelegado = new AdministradorDelegado();
		asesores = administradorDelegado.getListaAsesores();

		return "editarAsesor";
	}

	/**
	 * Metodo que permite obtener la seleccion de un Asesor desde la interfaz
	 * 
	 * @return
	 * @throws NamingException
	 */
	public String obtenerSeleccion() throws NamingException {
		administradorDelegado = new AdministradorDelegado();
		asesorSeleccionado = (Asesor) getMyDataTable().getRowData();
		infoInvestigaciones = administradorDelegado
				.getResumenInvestigacion(asesorSeleccionado.getIdentificacion());
		return "";
	}

	/**
	 * Metodo que permite eliminar la investigacion Asignada a un Asesor desde
	 * interfaz
	 * 
	 * @return
	 * @throws NamingException
	 */
	public String eliminarInvestigacionAsesor() throws NamingException {
		administradorDelegado = new AdministradorDelegado();
		instigacionSeleccionada = (ResumenInvestigacionAsesorDTO) getTablaInvestigacion()
				.getRowData();
		administradorDelegado
				.eliminarInvestigacionAsesor(instigacionSeleccionada);

		return "";
	}

	/**
	 * Metodo accesor del atributo asesores
	 * 
	 * @return the asesores
	 */
	public List<Asesor> getAsesores() {
		return asesores;
	}

	/**
	 * Metodo Modificador del atributo asesores
	 * 
	 * @param asesores
	 *            the asesores to set
	 */
	public void setAsesores(List<Asesor> asesores) {
		this.asesores = asesores;
	}

	/**
	 * Metodo accesor del atributo infoInvestigaciones
	 * 
	 * @return the infoInvestigaciones
	 */
	public List<ResumenInvestigacionAsesorDTO> getInfoInvestigaciones() {
		return infoInvestigaciones;
	}

	/**
	 * Metodo Modificador del atributo infoInvestigaciones
	 * 
	 * @param infoInvestigaciones
	 *            the infoInvestigaciones to set
	 */
	public void setInfoInvestigaciones(
			List<ResumenInvestigacionAsesorDTO> infoInvestigaciones) {
		this.infoInvestigaciones = infoInvestigaciones;
	}

	/**
	 * Metodo accesor del atributo myDataTable
	 * 
	 * @return the myDataTable
	 */
	public HtmlDataTable getMyDataTable() {
		return myDataTable;
	}

	/**
	 * Metodo Modificador del atributo myDataTable
	 * 
	 * @param myDataTable
	 *            the myDataTable to set
	 */
	public void setMyDataTable(HtmlDataTable myDataTable) {
		this.myDataTable = myDataTable;
	}

	/**
	 * Metodo accesor del atributo tablaInvestigacion
	 * 
	 * @return the tablaInvestigacion
	 */
	public HtmlDataTable getTablaInvestigacion() {
		return tablaInvestigacion;
	}

	/**
	 * Metodo Modificador del atributo tablaInvestigacion
	 * 
	 * @param tablaInvestigacion
	 *            the tablaInvestigacion to set
	 */
	public void setTablaInvestigacion(HtmlDataTable tablaInvestigacion) {
		this.tablaInvestigacion = tablaInvestigacion;
	}

	/**
	 * Metodo accesor del atributo asesorSeleccionado
	 * 
	 * @return the asesorSeleccionado
	 */
	public Asesor getAsesorSeleccionado() {
		return asesorSeleccionado;
	}

	/**
	 * Metodo Modificador del atributo asesorSeleccionado
	 * 
	 * @param asesorSeleccionado
	 *            the asesorSeleccionado to set
	 */
	public void setAsesorSeleccionado(Asesor asesorSeleccionado) {
		this.asesorSeleccionado = asesorSeleccionado;
	}

	/**
	 * Metodo accesor del atributo instigacionSeleccionada
	 * 
	 * @return the instigacionSeleccionada
	 */
	public ResumenInvestigacionAsesorDTO getInstigacionSeleccionada() {
		return instigacionSeleccionada;
	}

	/**
	 * Metodo Modificador del atributo instigacionSeleccionada
	 * 
	 * @param instigacionSeleccionada
	 *            the instigacionSeleccionada to set
	 */
	public void setInstigacionSeleccionada(
			ResumenInvestigacionAsesorDTO instigacionSeleccionada) {
		this.instigacionSeleccionada = instigacionSeleccionada;
	}

}
